SQL - TSQL - Basico

O que é TSQL ?

TSQL é a abreviação de transação sql ou Transaction SQL.

O que é uma transação SQL ?

Transação SQL pode ser uma operação ou um 'grupo' de operações feitas no banco de dados com tudo que é necessário para o gerenciamento perfeito do SQL server e das regras de negócio envolvidos no processo. Estas são as principais regras de uma transação SQL Server :

Tudo ou nada

Suponha que numa operação, por exemplo, a de um banco envolva transferir dinheiro de uma conta para outra. Portanto teríamos uma operação de débito na conta origem e um crédito na conta destino. Abreviaremos uma transação pela sigla trans, como o sql faz.

Em termos gerais a opeação seria assim na visão do banco de dados sql :
begin trans
debitar conta origem
creditar conta destino
end trans

Suponto que ao realizar esta operação tenhamos um erro..o débito na conta origem foi feito mas o crédito na conta de destino tenha sofrido um erro. Quais seriam as consequências? Para um banco péssimas, imagine retirar dinheiro de uma conta sem depositar na outra..isso seria apropriação indevida de fundos e é ilegal em qualquer país do mundo.

Sendo assim, ao dar erro em qualquer uma das operações realizadas na transação todas as operacões anteriores realizadas com sucesso tem que ser desfeitas, obrigatóriamente. É isso que a transação garante a você, ou todas as operações são feitas com sucesso ou nenhuma operação do conjunto de operações é efetuada .

Este tipo de operação, tudo ou nada é muito comum em ambientes bancários. Um banco processa documentos por lotes garantindo que os créditos caiam antes dos débitos, garantindo que 'todas' as transferencias sejam realizadas com sucesso ou, em caso de erro, o lote inteiro tenha que ser reprocessado novamente. Citando um exemplo, é como a emissão de apólices de seguros do banco Itaú funciona e, provavelmente, da maioria dos bancos do mundo.

Note que quando a transação dá errado obrigatóriamente deverá ocorrer o reprocessamento do lote novamente e para que na segunda vez o lote passe perfeitamente precisamos que a causa do erro do primeiro processamento tenha sido resolvida. Se foi uma queda temporária num banco de dados da nuvem basta reprocessar que tudo sairá bem. Se foi um erro num programa o erro do programa deve ser corrigido antes de reprocessar o lote. Esta é a tarefa da equipe de sustentação de negócios da empresa. Tem que ser muito ágil e eficiente porque um negócio da empresa está parado a espera da correção. E olha que não pode ser chamado de pastelaria porque é uma exigencia do negócio da empresa, ou é assim ou ela tem que parar de prestar o serviço.

Conversão automática de campos

Se você conhece os processos de arquivamento sabe que temos algumas formas primitivas de dados. Chamamos de formas primitivas porque são formas básicas de armazenamento como números, datas, textos, etc. Tudo que é banco de dados tem esses 'tipos' de valores mas cada um faz à sua maneira.

Um campo num banco de dados pode ser salvo nativamente em binário e será convertido no momento que for extraído do banco de dados. É o caso de campo tipo data, dinheiro entre outros. O dado salvo no servidor é um padrão específico, em binário. Ao ser extraído esse dado é convertido automaticamente para o idioma do usuário. Se o idioma do usuário for inglês americano a data padrão será 'mm/dd/yyyy' e para o padrão brasileiro seria 'dd/mm/yyyy' e um chines seria 'yyyy-mm-dd'. O dinheiro para português seria R$ 2345,67 e para o inglês seria US$ 2345.67.

Estes campos são particularmente confusos quando vamos fazer a atualização das informações no banco de dados. Por exemplo, quando o usuário digita um preço teríamos, por exemplo, o valor R$ 34.567,89 e para fazer a atualização no banco de dados teríamos que converter o valor para 34567.89 pois o padrão para atualização de campos monetários é o inglês.

Pensando em atualização dos dados no SQL Server o campo tipo dinheiro não aceita divisão por milhares e aceita apenas um . funcionando como vírgula apenas.

Num MySQL toda data para atualização de banco de dados deverá estar no formato chinês, ou seja, 'yyyy-mm-dd'.

Tipos de Operações SQL

Como todos sabemos temos 4 funcionalidades básicas possíveis com os dados : exibição, atualização, eliminação e inserção.

Contudo a nível de Operações SQL temos 5 tipos : DDL, DML, DQL, DTL e DCL.

DDL

DDL significa linguagem de descrição de dados ou Data Description Language e são os comandos SQL que alteram a estrutura de algum objeto no banco de dados . Tentando explicar melhor, São os comandos que interagem com os objetos do banco de dados. Por exemplo, um cretate database, create table não trabalham com dados e sim com a estrutura dos objetos do banco de dados. Os comandos pertinentes a esta classe (DDL) são : CREATE, ALTER e DROP

DML

São os Comandos de Manipulação de Dados SQL. A sigla significa 'Data Manipulation Language' e são os comandos que trabalham com os dados em sí não só alterando mas exibindo essas informações e, nesta exibição, pode realizar operações de ordenamento, agrupamento, etc. Os comandos pertinentes a esta classe (DML) são INSERT, DELETE e UPDATE.

DQL

Esta sigla é pouco usada mas existe. A sigla DQL significa Linguagem de pesquisa ou consulta, em ingles, 'Data Query Language'. É basicamente o comando SELECT mas eu prefiro eliminar essa sigla e dizer que o SELECT fica na DML porque, embora ele não altere dados, ele altera a 'visão' de como esses dados são vistos.

DTL

São os comandos que implementam os processos realizados pelas transações no servidor. DTL significa em inglês 'Data Transaction Language'.Os comandos pertinentes a esta classe (DTL) são BEGIN TRANSACTION, COMMIT E ROLLBACK.

DCL

São os comandos que controlam o acesso aos dados do servidor. A sigla significa 'Data Control Language e são os comandos para controlar as funcionalidades de segurança e acesso aos dados. Os comandos pertinentes a esta classe (DCL) são : GRANT, REVOKE E DENY

Nota : Cada comando SQL possuí inúmeras funcionalidades e cada fabricante de servidor SQL faz sua própria implmentação nem sempre obedecendo as normas ISO/IEC 17799:2005. Por este motivo mencionarei os links para a plataforma MS SQL Server.

DDL-Detalhando os comandos


Create

Create é o comando que cria novos objetos no banco de dados. Pode criar:

Bancos de dados : Create Database

Tabela : Create Table

Procedure : Create Procedure

View : Create View

Detalhando os comandos - DML


Select

Um dos comandos mais utilizados no SQL e que pertencem ao TSQL é o Select.
O comando select apenas obtém os dados armazenados no servidor SQL com a intenção de exibí-los sem efetuar qualquer alteração nestes dados mas pode realizar operações com as informações retornadas. É o comando basico para exibição das informações e como no mundo de hoje apresentação é fundamental faz isso com muita classe.

Ele pode :
apenas obter dados e exibir os dados ... SELECT * from tabela
contanto quantos tem ... SELECT count (*)...
agregando ... select....group by.
ordenando ... select ... order by.
associando... select col1 + col2 ....

E muito mais...vamos ver estes comandos com mais detalhes logo a seguir.

Insert

O segundo tipo de operação DML mais importante é o de Inserção de dados. Ele é feito pelo comando Insert e tem uma sintaxe bem simples >

insert into tabela (campo1, campo2,...) values (dado1, dado2,....)

A descrição dos campos no comando insert pode ser omitida desde que você coloque nos dados todos os campos da tabela, exatamente no mesmo número e sequencia. Profissionalmente nunca fazemos isso porque se a estrutura da tabela for alterada o comando de inserção passará a dar erro por falta de informações para a coluna inserida e isso é péssimo, corrigindo um item (inserindo um campo numa tabela) precisariamos varrer todos os inserts executados no processo para alterar e corrigir acrescentando o novo dado do novo campo inserido. Muitas vezes a informação sequer existe em muitos desses inserts e você apenas tem que colocar um null no campo. Se você inserir as colunas no insert este 'trabalho extra' seria poupado.